home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / engine / Engine.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  8.8 KB  |  329 lines

  1. package engine
  2. {
  3.    import copy.CopyBank;
  4.    import flash.display.Sprite;
  5.    import flash.events.TimerEvent;
  6.    import flash.utils.Timer;
  7.    
  8.    public class Engine extends Sprite
  9.    {
  10.       
  11.       private static var _instance:Engine;
  12.        
  13.       
  14.       private var _lives:Number = 3;
  15.       
  16.       private var _gameUI:GameUI;
  17.       
  18.       private var _states:Object;
  19.       
  20.       private var _difficulty:Number = 0;
  21.       
  22.       private var _paused:Boolean = false;
  23.       
  24.       private var _initialSetup:Boolean = false;
  25.       
  26.       private var _fuel:Number = 100;
  27.       
  28.       private var _state:Number = 0;
  29.       
  30.       private var _lifeCounter:Number = 0;
  31.       
  32.       private var _scene:WorldScene;
  33.       
  34.       private var _score:Number = 0;
  35.       
  36.       private var _missionTime:Number = 0;
  37.       
  38.       private var _secondaryState:Number = 0;
  39.       
  40.       private var _missionNumber:Number = 1;
  41.       
  42.       private var _missionTimer:Timer;
  43.       
  44.       public function Engine()
  45.       {
  46.          _states = {
  47.             "Inactive":0,
  48.             "MissionScreen":1,
  49.             "Gameplay":2,
  50.             "Paused":3,
  51.             "LevelComplete":4,
  52.             "Gameover":5
  53.          };
  54.          _secondaryState = 0;
  55.          _state = 0;
  56.          _paused = false;
  57.          _initialSetup = false;
  58.          _difficulty = 0;
  59.          _fuel = 100;
  60.          _lives = 3;
  61.          _score = 0;
  62.          _lifeCounter = 0;
  63.          _missionNumber = 1;
  64.          _missionTime = 0;
  65.          super();
  66.          _instance = this;
  67.          _scene = new WorldScene();
  68.          _scene.x = 5;
  69.          _scene.y = 5;
  70.          addChild(_scene);
  71.          _gameUI = new GameUI();
  72.          _gameUI.y = 413;
  73.          addChild(_gameUI);
  74.          _gameUI.init();
  75.          _missionTimer = new Timer(100);
  76.          _missionTimer.addEventListener(TimerEvent.TIMER,onTimerHandler);
  77.       }
  78.       
  79.       public static function get Instance() : Engine
  80.       {
  81.          return _instance;
  82.       }
  83.       
  84.       public function get STATES() : Object
  85.       {
  86.          return _states;
  87.       }
  88.       
  89.       public function updateSoundDisplay() : *
  90.       {
  91.          _gameUI.updateSoundDisplay();
  92.       }
  93.       
  94.       public function startNewGame() : *
  95.       {
  96.          _fuel = 100;
  97.          _lives = 3;
  98.          _score = 0;
  99.          _difficulty = 0;
  100.          _scene.clearMissionElements();
  101.          _gameUI.updateLives(_lives);
  102.          _gameUI.updateFuel(_fuel);
  103.          _gameUI.updateScore(_score);
  104.          startMission(1);
  105.       }
  106.       
  107.       public function initSceneMain() : *
  108.       {
  109.          if(!_initialSetup)
  110.          {
  111.             _initialSetup = true;
  112.             _scene.initStaticElements();
  113.          }
  114.       }
  115.       
  116.       public function setPopupMessage(msgObj:Object) : *
  117.       {
  118.          _gameUI.setMessage(msgObj.msg,msgObj.vibe);
  119.       }
  120.       
  121.       public function get State() : Number
  122.       {
  123.          return _state;
  124.       }
  125.       
  126.       public function endGame() : *
  127.       {
  128.          var missionString:String = null;
  129.          missionString = String(_missionNumber);
  130.          if(missionString.length < 2)
  131.          {
  132.             missionString = "0" + missionString;
  133.          }
  134.          Main.Instance.Tracker.trackEvent("NATM2_Flight","Level" + missionString,"quit",Math.floor(_missionTime));
  135.          _missionTimer.stop();
  136.          _state = STATES.Inactive;
  137.          Main.Instance.stopPropeller();
  138.       }
  139.       
  140.       public function get Score() : *
  141.       {
  142.          return _score;
  143.       }
  144.       
  145.       public function cacheBitmaps() : *
  146.       {
  147.          BitmapLibrary.init();
  148.       }
  149.       
  150.       public function startGameplay() : *
  151.       {
  152.          _state = STATES.Gameplay;
  153.          _scene.respawn();
  154.          Main.Instance.setMissionMusic();
  155.          _missionTimer.start();
  156.          trace("Engine.Instance.Difficulty: " + Engine.Instance.Difficulty);
  157.       }
  158.       
  159.       public function initCopy() : *
  160.       {
  161.          _gameUI.initCopy();
  162.       }
  163.       
  164.       public function set Fuel(inVal:Number) : *
  165.       {
  166.          _fuel = inVal;
  167.          if(_fuel > 100)
  168.          {
  169.             _fuel = 100;
  170.          }
  171.          _gameUI.updateFuel(_fuel);
  172.       }
  173.       
  174.       public function addScore(inVal:Number) : *
  175.       {
  176.          _score += inVal;
  177.          _gameUI.updateScore(_score);
  178.       }
  179.       
  180.       public function startMission(mission:Number = 0) : *
  181.       {
  182.          var missionString:String = null;
  183.          _missionTime = 0;
  184.          _missionTimer.stop();
  185.          missionString = String(_missionNumber);
  186.          if(missionString.length < 2)
  187.          {
  188.             missionString = "0" + missionString;
  189.          }
  190.          Main.Instance.Tracker.trackEvent("NATM2_Flight","Level" + missionString,"start");
  191.          if(mission > 0)
  192.          {
  193.             _missionNumber = mission;
  194.          }
  195.          _scene.initMissionElements(_missionNumber);
  196.          _gameUI.setMissionScreen(_missionNumber);
  197.          _state = STATES.MissionScreen;
  198.       }
  199.       
  200.       public function set Lives(inVal:Number) : *
  201.       {
  202.          _lives = inVal;
  203.          _gameUI.updateLives(_lives);
  204.       }
  205.       
  206.       private function onTimerHandler(event:*) : *
  207.       {
  208.          _missionTime += 0.1;
  209.       }
  210.       
  211.       public function get Difficulty() : *
  212.       {
  213.          return _difficulty;
  214.       }
  215.       
  216.       public function missionComplete() : *
  217.       {
  218.          var missionString:String = null;
  219.          _gameUI.setVictoryScreen();
  220.          trace("_missionTime: " + _missionTime);
  221.          missionString = String(_missionNumber);
  222.          if(missionString.length < 2)
  223.          {
  224.             missionString = "0" + missionString;
  225.          }
  226.          Main.Instance.Tracker.trackEvent("NATM2_Flight","Level" + missionString,"complete",Math.floor(_missionTime));
  227.          _missionTimer.stop();
  228.          ++_missionNumber;
  229.          ++_lifeCounter;
  230.          if(_lifeCounter > 4)
  231.          {
  232.             _lifeCounter = 0;
  233.             addLives(1);
  234.          }
  235.          ++_difficulty;
  236.       }
  237.       
  238.       public function addLives(inVal:Number) : *
  239.       {
  240.          var missionString:String = null;
  241.          trace("addlives. inVal: " + inVal);
  242.          _lives += inVal;
  243.          if(_lives < 0)
  244.          {
  245.             gameOver();
  246.          }
  247.          if(inVal > 0)
  248.          {
  249.             Engine.Instance.setPopupMessage(CopyBank.Instance.FreeLife);
  250.          }
  251.          else
  252.          {
  253.             missionString = String(_missionNumber);
  254.             if(missionString.length < 2)
  255.             {
  256.                missionString = "0" + missionString;
  257.             }
  258.             if(_scene.PlaneObj.Fuel > 0)
  259.             {
  260.                Main.Instance.Tracker.trackEvent("NATM2_Flight","miscellaneous","LifeLost_damage",missionString);
  261.             }
  262.             else
  263.             {
  264.                Main.Instance.Tracker.trackEvent("NATM2_Flight","miscellaneous","LifeLost_fuel",missionString);
  265.             }
  266.          }
  267.          if(_lives > 3)
  268.          {
  269.             addScore(50000);
  270.             _lives = 3;
  271.          }
  272.          _gameUI.updateLives(_lives,true);
  273.       }
  274.       
  275.       public function set Score(inVal:Number) : *
  276.       {
  277.          _score = inVal;
  278.          _gameUI.updateScore(_score);
  279.       }
  280.       
  281.       private function gameOver() : *
  282.       {
  283.          var missionString:String = null;
  284.          missionString = String(_missionNumber);
  285.          if(missionString.length < 2)
  286.          {
  287.             missionString = "0" + missionString;
  288.          }
  289.          Main.Instance.Tracker.trackEvent("NATM2_Flight","Level" + missionString,"fail",Math.floor(_missionTime));
  290.          _missionTimer.stop();
  291.          _gameUI.setGameoverScreen();
  292.          _state = STATES.Gameover;
  293.          Main.Instance.stopPropeller();
  294.          Main.Instance.setMenuMusic();
  295.       }
  296.       
  297.       public function get Lives() : Number
  298.       {
  299.          return _lives;
  300.       }
  301.       
  302.       public function pauseToggle(overrideSetting:Boolean = false) : void
  303.       {
  304.          if(_state == _states.Gameplay)
  305.          {
  306.             trace("attempting to pause");
  307.             _secondaryState = _states.Gameplay;
  308.             Main.Instance.Tracker.trackEvent("NATM2_Flight","pauseGame","on");
  309.             _missionTimer.stop();
  310.             _state = _states.Paused;
  311.             return;
  312.          }
  313.          if(_state == _states.Paused && !overrideSetting)
  314.          {
  315.             Main.Instance.Tracker.trackEvent("NATM2_Flight","pauseGame","off");
  316.             _state = _secondaryState;
  317.             if(_missionTimer)
  318.             {
  319.                if(_state == _states.Gameplay)
  320.                {
  321.                   _missionTimer.start();
  322.                }
  323.             }
  324.             return;
  325.          }
  326.       }
  327.    }
  328. }
  329.